<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>类</title>
    <script>
        /*
        OOP:面向对象编程
        class name{
           class body
        }
        constructor()：是类的构造函数，用于传递参数，返回实例对象，用new生成对象时，自动调用该方法
         */
        class star {
           constructor(uname) {
               //constructor里的this指向的是创建的实例对象
               this.name=uname;
           }
        }
        var a=new star("ldh");
        console.log(a.name);
        /*类的继承
         语法： class Son extends Father{}
         super()
          调用父类中的构造函数
          super.父类中的函数名（）来调用普通函数
          super必须在子类中的this前调用
          init()初始化操作让相关元素绑定事件
         */
        class Father {
          constructor(x,y) {
           this.x=x;
           this.y=y;
          }
          sum(){
            console.log(this.x+this.y);//this指的是调用父类的对象
          }
        }
        class Son extends Father{
            constructor(x,y) {
                super(x,y);//调用了父类中的构造函数
            }
        }
        var son=new Son(1,2);
        son.sum();
    </script>
</head>
<body>
<script>
    /*
    类的本质是  function
    类的所有方法都定义在类的prototype属性上
    类创建的实例里也有_proto_指向类的prototype原型对象
     */
</script>
</body>
</html>